﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Bastanteo.Domain;
using System.Data.SqlClient;

namespace Bastanteo.Persistencia.ADO
{
    public class ClienteDAO : IClienteDAO 
    {
        public Cliente Crear(Cliente r)
        {
            using (SqlConnection con = new SqlConnection(Conexion.ObtenerCadena()))
            {

                if (r.ClienteId   != null)
                {
                con.Open();
                string sql = "insert into Cliente values (@id, @ruc, @rz, @io, @te, @ce)";
                using (SqlCommand com = new SqlCommand(sql, con))
                {
                    com.Parameters.AddWithValue("@id", r.ClienteId );
                    com.Parameters.AddWithValue("@ruc", r.ClienteRuc );
                    com.Parameters.AddWithValue("@rz", r.ClienteRazonSocial );
                    com.Parameters.AddWithValue("@io", r.ClienteInicioOperaciones );
                    com.Parameters.AddWithValue("@te", r.ClienteTipoEmpresa );
                    com.Parameters.AddWithValue("@ce", r.ClienteCantEmpleados );
                    com.ExecuteNonQuery();
                }
                }
            }
            return Obtener(r.ClienteId);
        }
        public Cliente  Obtener(string id)
        {
            Cliente o = null;
            using (SqlConnection con = new SqlConnection(Conexion.ObtenerCadena()))
            {
                con.Open();
                string sql = "select * from cliente where clienteId=@id";
                using (SqlCommand com = new SqlCommand(sql, con))
                {
                    com.Parameters.AddWithValue("@id", id);
                    SqlDataReader r = com.ExecuteReader();
                    if (r.Read())
                    {
                        o = new Cliente();
                        o.ClienteId = (string)r["ClienteId"];
                        o.ClienteRuc = (string)r["ClienteRuc"];
                        o.ClienteRazonSocial = (string)r["ClienteRazonSocial"];
                        o.ClienteInicioOperaciones = (DateTime)r["ClienteInicioOperaciones"];
                        o.ClienteTipoEmpresa = (string)r["ClienteTipoEmpresa"];
                        o.ClienteCantEmpleados = (int)r["ClienteCantEmpleados"];
                        
                    }
                }
            }
            return o;
        }
        public Cliente  Modificar(Cliente  r)
        {
            using (SqlConnection con = new SqlConnection(Conexion.ObtenerCadena()))
            {
                con.Open();
                string sql = "update Cliente set  ClienteRuc=@ruc, ClienteRazonSocial=@rz, ClienteInicioOperaciones=@io, ClienteTipoEmpresa=@te,ClienteCantEmpleados=@ce where ClienteId=@id";
                using (SqlCommand com = new SqlCommand(sql, con))
                {
                    com.Parameters.AddWithValue("@id", r.ClienteId);
                    com.Parameters.AddWithValue("@ruc", r.ClienteRuc);
                    com.Parameters.AddWithValue("@rz", r.ClienteRazonSocial);
                    com.Parameters.AddWithValue("@io", r.ClienteInicioOperaciones);
                    com.Parameters.AddWithValue("@te", r.ClienteTipoEmpresa);
                    com.Parameters.AddWithValue("@ce", r.ClienteCantEmpleados);
                    com.ExecuteNonQuery();
                }
            }
            return Obtener(r.ClienteId );
        }
        public void Eliminar(Cliente  r)
        {
            using (SqlConnection con = new SqlConnection(Conexion.ObtenerCadena()))
            {
                con.Open();
                string sql = "delete from cliente where ClienteId=@id";
                using (SqlCommand com = new SqlCommand(sql, con))
                {
                    com.Parameters.AddWithValue("@id", r.ClienteId);
                    com.ExecuteNonQuery();
                }
            }
        }
        public ICollection<Cliente> Listar()
        {
            ICollection<Cliente> _todos = null;
            Cliente o = null;

            using (SqlConnection con = new SqlConnection(Conexion.ObtenerCadena()))
            {
                con.Open();

                string sql = "select * from Cliente";
                using (SqlCommand com = new SqlCommand(sql, con))
                {
                    SqlDataReader r = com.ExecuteReader();
                    if (r.Read())
                    {
                        o = new Cliente();
                        o.ClienteId = (string)r["ClienteID"];
                        o.ClienteRuc = (string)r["ClienteRuc"];
                        o.ClienteRazonSocial = (string)r["ClienteRazonSocial"];
                        o.ClienteInicioOperaciones = (DateTime)r["ClienteInicioOperaciones"];
                        o.ClienteCantEmpleados = (int)r["ClienteCantEmpleados"];
                        o.ClienteTipoEmpresa = (string)r["ClienteTipoEmpresa"];
                       

                        _todos.Add(o);
                    }
                }
            }

            return _todos;
        }

        public  string GenerarNuevoCodigo()
        {
            int _NuevoCodigo = new Random().Next(5000);
          
            return _NuevoCodigo.ToString();
        }

    }
}